package com.dev.view.sharedpreferences;

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.EditText;
import android.widget.Toast;

import com.dev.R;

import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Click;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.ViewById;

/**
 * SharedPreferences是一种轻型的Android数据存储方式，它的本质是基于XML文件存储key-value键值对数据，
 * 通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。
 * SharedPreferences对象本身只能获取数据而不支持存储和修改，
 * 存储修改是通过Editor对象实现。比较经典的使用方式例如用户输入框对过往登录账户的存储。
 * 实现SharedPreferences存储的步骤如下：
 * <p/>
 * 1、根据Context获取SharedPreferences对象
 * 2、利用edit()方法获取Editor对象。
 * 3、通过Editor对象存储key-value键值对数据。
 * 4、通过commit()方法提交数据。
 * <p/>
 * http://www.codeceo.com/article/android-sharedpreferences-usage.html
 */
@EActivity(R.layout.activity_shared_preferences)
public class SharedPreferencesActivity extends AppCompatActivity {
    @ViewById(R.id.et_password)
    EditText et_password;

    @ViewById(R.id.et_user)
    EditText et_user;

    private SharedPreferences sharedPreferences;
    SharedPreferences.Editor editor;


    @AfterViews
    public void initView() {
//        getSharedPreferences (String name, int mode)
//        方法得到一个sharedpreferences对象，参数name是preference文件的名字，mode则是方式，默认为0。
        sharedPreferences = getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
//        Editor可用于SharedPreferences数据的添加，删除，修改和查询。
//        SharedPreferences.Editor  putString (String key,String value)
//        通过执行commit（）或是apply（）方法，将会应用更改。
        editor = sharedPreferences.edit();
    }


    @Click(R.id.btn_save)
    public void btnSave() {
        String user = et_user.getText().toString();
        String pass = et_password.getText().toString();

        if (isEmpty(user, pass)) {
            editor.putString("user", user);
            editor.putString("pass", pass);
            editor.commit();// 提交修改
            Toast.makeText(getBaseContext(), "保存成功", Toast.LENGTH_LONG).show();
            et_user.getText().clear();
            et_password.getText().clear();
        }
    }

    @Click(R.id.btn_get)
    public void btnGet() {
        String user = sharedPreferences.getString("user", "");
        String pass = sharedPreferences.getString("pass", "");
        if (isEmpty(user, pass)) {
            et_user.setText(user);
            et_password.setText(pass);
        }
    }

    /**
     * 清除sharedpreferences的数据
     */
    @Click(R.id.btn_clear)
    public void clearData() {
        et_user.getText().clear();
        et_password.getText().clear();

        editor.remove("user");
        editor.remove("pass");
        editor.commit();// 提交修改

        Toast.makeText(getBaseContext(), "清除数据成功", Toast.LENGTH_LONG).show();
    }

    private boolean isEmpty(String user, String password) {
        if (TextUtils.isEmpty(user)) {
            Toast.makeText(getBaseContext(), "用户名不能为空", Toast.LENGTH_LONG).show();
            return false;
        }
        if (TextUtils.isEmpty(password)) {
            Toast.makeText(getBaseContext(), "密码不能为空", Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }
}
